const path = require('path');
const TerserPlugin = require('terser-webpack-plugin');

function resolve(dir) {
  return path.join(__dirname, dir);
}

const isPro = process.env.NODE_ENV === 'production';

const releasePath = "/"; //https://imgcache.qq.com/qcloud/discuzq/website

const publicPath = isPro ? releasePath : '/';

module.exports = {
  publicPath,
  outputDir: `dist`,
  // 通过 Babel 显式转译一个依赖
  transpileDependencies: [],
  productionSourceMap: false,
  pluginOptions: {
    'style-resources-loader': {
      // 项目载入全局样式
      preProcessor: 'scss',
      patterns: [resolve('./src/styles/base.scss')],
    },
  },
  css: {
    extract: true,
  },
  chainWebpack: (config) => {
    config.resolve.alias.set('@', resolve('src')).set('@components', resolve('src/components'));
  },
  configureWebpack: (config) => {
    // eslint-disable-next-line no-param-reassign
    config.optimization = {
      minimizer: [
        new TerserPlugin({
          terserOptions: {
            warnings: false,
            compress: {
              ecma: 5,
              drop_debugger: isPro,
              drop_console: isPro,
            },
            output: {
              ecma: 5,
              comments: false,
              // Turned on because emoji and regex is not minified properly using default
              // https://github.com/facebook/create-react-app/issues/2488
              ascii_only: true,
            },
            sourceMap: false,
            cache: true,
            parallel: true,
          },
        }),
      ],
      splitChunks: {
        cacheGroups: {
          vendors: {
            name: 'chunk-vendors',
            priority: -10,
            chunks: 'all',
            test: /[\\/]node_modules[\\/](vue|axios|vue-router|vuex)[\\/]/,
            enforce: true,
          },
          // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/113
          // mini-css-extract-plugin Conflicting order problem
          default: false,
          common: false,
        },
      },
      // runtimeChunk: true
    };
  },
  // https://webpack.docschina.org/configuration/dev-server
  devServer: {
    // port: 8080,
    // 代理请求
    // 更多代理设置请看：https://github.com/chimurai/http-proxy-middleware#options
    proxy: {
      '/act/common': {
        target: 'https://cloud.tencent.com',
        changeOrigin: true,
        ws: true,
        // pathRewrite: {
        //   '^/api': '',
        // },
      },
    },
  },
};
